從零開始:LINE OA + Gemini + Vercel 打造 LINE AI Agent 客服 實務指南
這份指南適合誰?
如果你是:
- 想為自己的產品加入 AI 客服的開發者
- 對 LINE Bot 開發有興趣的工程師
- 想了解如何整合 AI 的技術人員
這份指南將帶你一步步實作出完整的 AI 客服系統。
專案成果預覽
完成後,你將擁有:
- ✅ 一個能在 LINE 上自動回答問題的機器人
- ✅ 使用 Google Gemini AI 的智能回應系統
- ✅ 部署在雲端的 24/7 服務
- ✅ 每月成本低於 $10 美元(約 300 台幣)
第一部分:準備工作
1.1 需要的帳號
-
LINE Developers
- 前往 https://developers.line.biz/console/
- 用 LINE 帳號登入即可
-
Google AI Studio
- 前往 https://aistudio.google.com/
- 申請 Gemini API Key(免費額度很充足)
-
Vercel
- 前往 https://vercel.com/
- 可用 GitHub 帳號登入(免費版就夠用)
1.2 開發環境
# 必要軟體
- Python 3.8 以上
- Git
- VS Code 或其他編輯器
# 安裝 Python 套件
pip install flask line-bot-sdk google-generativeai
第二部分:核心概念說明
2.1 系統架構
我們的系統分成兩層:
用戶發問 → L1檢索層(找相關資料) → L2 AI層(生成回答) → 回覆用戶
為什麼要分兩層?
- L1 快速找到相關知識(< 0.1秒)
- L2 用 AI 生成自然的回答(1-2秒)
- 結合速度與智能的優點
2.2 運作流程
- 用戶在 LINE 發送訊息
- LINE 將訊息傳到我們的伺服器
- 系統分析問題並生成回答
- 透過 LINE API 回覆給用戶
第三部分:動手實作
3.1 建立專案結構
my-line-bot/
├── src/
│ ├── knowledge_retriever.py # L1 知識檢索
│ └── gemini_responder.py # L2 AI 回應
├── api/
│ └── webhook.py # 接收 LINE 訊息
├── requirements.txt # 套件清單
└── vercel.json # 部署設定
3.2 Step 1: 建立知識庫 (L1層)
創建 src/knowledge_retriever.py
:
class KnowledgeRetriever:
def __init__(self):
# 定義你的產品知識
self.knowledge_base = {
"產品介紹": {
"keywords": ["什麼", "功能", "介紹"],
"content": "我們的產品可以..."
},
"價格方案": {
"keywords": ["價格", "費用", "多少錢"],
"content": "基本版免費,進階版每月..."
},
# 加入更多知識...
}
def retrieve(self, query):
"""根據用戶問題找出相關知識"""
results = []
for category, info in self.knowledge_base.items():
# 檢查關鍵字是否匹配
if any(kw in query for kw in info["keywords"]):
results.append(info["content"])
return results
3.3 Step 2: 整合 AI (L2層)
創建 src/gemini_responder.py
:
import google.generativeai as genai
class GeminiResponder:
def __init__(self, api_key):
genai.configure(api_key=api_key)
self.model = genai.GenerativeModel('gemini-pro')
def generate_response(self, query, knowledge):
# 建立 AI 的指令
prompt = f"""
你是客服助理,請根據以下資訊回答用戶問題。
相關知識:
{knowledge}
用戶問題:{query}
請用友善、簡潔的方式回答。
"""
response = self.model.generate_content(prompt)
return response.text
3.4 Step 3: 處理 LINE Webhook
創建 api/webhook.py
:
from flask import Flask, request, abort
import json
import requests
import os
app = Flask(__name__)
# 你的 LINE 憑證
CHANNEL_SECRET = os.getenv('LINE_CHANNEL_SECRET')
CHANNEL_ACCESS_TOKEN = os.getenv('LINE_CHANNEL_ACCESS_TOKEN')
@app.route("/api/webhook", methods=['POST'])
def webhook():
# 接收 LINE 的訊息
body = request.get_data(as_text=True)
events = json.loads(body).get('events', [])
for event in events:
if event['type'] == 'message':
# 取得用戶訊息
user_message = event['message']['text']
reply_token = event['replyToken']
# 處理訊息(呼叫 L1 + L2)
response = process_message(user_message)
# 回覆用戶
reply_to_line(reply_token, response)
return 'OK'
def reply_to_line(reply_token, text):
"""透過 LINE API 回覆訊息"""
url = 'https://api.line.me/v2/bot/message/reply'
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {CHANNEL_ACCESS_TOKEN}'
}
data = {
'replyToken': reply_token,
'messages': [{'type': 'text', 'text': text}]
}
requests.post(url, headers=headers, json=data)
3.5 Step 4: 部署到 Vercel
- 創建
vercel.json
:
{
"version": 2,
"builds": [
{
"src": "api/webhook.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "/api/webhook.py"
}
]
}
- 創建
requirements.txt
:
Flask==2.3.0
google-generativeai==0.3.2
requests==2.31.0
- 部署指令:
# 安裝 Vercel CLI
npm i -g vercel
# 部署
vercel
# 設定環境變數
vercel env add LINE_CHANNEL_SECRET
vercel env add LINE_CHANNEL_ACCESS_TOKEN
vercel env add GEMINI_API_KEY
# 部署到生產環境
vercel --prod
第四部分:設定 LINE
4.1 創建 LINE Bot
- 登入 LINE Developers Console
- 創建新的 Provider
- 創建新的 Messaging API Channel
- 取得:
- Channel Secret(在 Basic settings)
- Channel Access Token(在 Messaging API,點擊 Issue)
4.2 設定 Webhook
- 取得 Vercel 網址(例如:
https://your-bot.vercel.app
) - 在 LINE Console 設定:
- Webhook URL:
https://your-bot.vercel.app/api/webhook
- Use webhook: 開啟
- Auto-reply: 關閉
- Webhook URL:
4.3 測試
- 掃描 QR Code 加好友
- 發送訊息測試
- 應該會收到 AI 回應!
第五部分:常見問題解決
問題 1:Webhook 驗證失敗
原因:LINE 會發送空的測試請求 解決:
# 特別處理空 events
if len(events) == 0:
return 'OK' # 直接回應 200
問題 2:回應太慢
原因:AI 生成需要時間 優化:
- 使用更快的 AI 模型(如 gemini-flash)
- 減少 prompt 長度
- 考慮加入快取機制
問題 3:成本控制
估算:
- Gemini API:每 1000 次約 $1 美元
- Vercel:免費版每月 100GB-Hours
- LINE:Official Account 免費版夠用
第六部分:進階功能
6.1 加入圖片回應
def reply_image(reply_token, image_url):
data = {
'replyToken': reply_token,
'messages': [{
'type': 'image',
'originalContentUrl': image_url,
'previewImageUrl': image_url
}]
}
6.2 記錄對話歷史
# 使用資料庫儲存
conversations = {}
def save_conversation(user_id, message, response):
if user_id not in conversations:
conversations[user_id] = []
conversations[user_id].append({
'message': message,
'response': response,
'timestamp': datetime.now()
})
6.3 Rich Menu 快速選單
在 LINE Console 設計圖形化選單,讓用戶快速選擇常見問題。
第七部分:實戰經驗分享
7.1 開發心得
-
從簡單開始
- 先做基本功能
- 確認能收發訊息
- 再逐步加入 AI
-
測試很重要
- 準備測試問題清單
- 模擬用戶真實問法
- 處理邊界情況
-
維護知識庫
- 定期更新產品資訊
- 收集常見問題
- 優化關鍵字匹配
7.2 踩過的坑
-
Vercel 部署問題
- 某些套件無法編譯 → 改用純 Python 套件
- 環境變數沒生效 → 部署後要重新設定
-
LINE API 限制
- Reply token 30秒過期 → 快速回應
- 訊息長度限制 5000 字 → 分段發送
-
AI 回應品質
- 太囉嗦 → 調整 prompt
- 答非所問 → 改善知識檢索
第八部分:成本與效益分析
8.1 實際成本
以每月 10,000 次對話計算:
- Gemini API:約 $10 美元
- Vercel:免費
- LINE OA:免費(推播另計)
- 總計:約 300 台幣/月
8.2 效益評估
- 節省客服人力:1-2 名人員
- 24/7 即時回應:提升滿意度
- 統一回答品質:減少錯誤
8.3 ROI 計算
月節省成本 = 人力成本 - 系統成本
= 35,000 - 300
= 34,700 元/月
總結
恭喜你!完成這份指南後,你已經學會:
- ✅ 建立 LINE Bot 的完整流程
- ✅ 整合 Google Gemini AI
- ✅ 部署到 Vercel 雲端平台
- ✅ 處理常見問題和優化
下一步建議
- 擴充知識庫:加入更多產品資訊
- 優化 AI:調整 prompt 提升回答品質
- 加入監控:追蹤使用情況和錯誤
- 收集回饋:了解用戶需求持續改進
資源連結
需要幫助?
- 電子郵件:[email protected]
- 更多教學:https://covia.io
授權聲明:本教學採用 MIT 授權,歡迎自由使用。
最後更新:2025/09/02
文檔迭代紀錄
協作夥伴戳記
- 2025/09/02 Claude 4.1 Opus Claude Code